package com.xueyi.workflow.domain.vo;

import lombok.Data;

import java.util.List;
import java.util.Map;

/**
 * 下一步节点信息
 *
 * @author xueyi
 * @date 2024-07-03
 */
@Data
public class NextNodeInfo {

    /**
     * 节点ID
     */
    private String nodeId;

    /**
     * 节点名称
     */
    private String nodeName;

    /**
     * 节点类型
     */
    private String nodeType;

    /**
     * 节点数据
     */
    private Map<String, Object> nodeData;

    /**
     * 连线条件表达式（网关节点）
     */
    private String conditionExpression;

    /**
     * 条件是否满足
     */
    private Boolean conditionMet;

    /**
     * 处理人员列表
     */
    private List<HandlerInfo> handlers;

    /**
     * 处理人员类型
     */
    private String handlerType;

    /**
     * 是否并行节点
     */
    private Boolean isParallel;

    /**
     * 节点描述
     */
    private String description;

    /**
     * 网关类型（exclusive/parallel/inclusive）
     */
    private String gatewayType;

    /**
     * 网关分支信息列表
     */
    private List<GatewayBranchInfo> gatewayBranches;

    /**
     * 抄送人员列表
     */
    private List<HandlerInfo> ccUsers;

    /**
     * 通知方式（system,email,sms,wechat）
     */
    private String notificationMethods;

    /**
     * 节点配置信息 - 通用配置容器
     * 包含各种类型的配置，如人员编辑权限、表单数据权限等
     * 前端新增配置类型时不需要后端改动
     */
    private Map<String, Object> nodeConfig;

    /**
     * 处理人员信息
     */
    @Data
    public static class HandlerInfo {
        /**
         * 人员ID
         */
        private String id;

        /**
         * 人员名称
         */
        private String name;

        /**
         * 人员类型
         */
        private String type;

        /**
         * 人员账号
         */
        private String account;
    }
} 